home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 398 / 398.xpi / chrome / forecastfox.jar / content / icons / web-service.js < prev   
Text File  |  2010-02-04  |  4KB  |  105 lines

  1. /*------------------------------------------------------------------------------
  2.   Copyright (c) 2008 Ensolis, LLC. All Rights Reserved.
  3.   ----------------------------------------------------------------------------*/
  4.    
  5. /******************************************************************************
  6.  * Performs a security check on a url.  
  7.  *
  8.  * @param   URL to check.
  9.  * @param   Parent window for error alert.
  10.  * @return  True if security check passes.
  11.  *****************************************************************************/
  12. function securityCheck(aURL, aParent)
  13. {
  14.   if (! (/^https?:\/\/.+\.jar$/i).test(aURL)) {
  15.     Components.utils.reportError("Invalid argument passed to window.forecastfox.installIconPack: Unsupported pack URL." );
  16.   
  17.     //get stringbundle
  18.     var bundle = getBundle();
  19.                       
  20.     //Show error message
  21.     var title = bundle.GetStringFromName("ff.web.check.name");
  22.     var message = bundle.GetStringFromName("ff.web.check.url.message");     
  23.     getPrompter(aParent).alert(title, message);
  24.     
  25.     return false;
  26.   }
  27.   return true; 
  28. }
  29.  
  30. /******************************************************************************
  31.  * Interfaces that is a global window property.  Used for
  32.  * getting Forecastfox information and installing icons.
  33.  * 
  34.  * @status    FROZEN
  35.  * @version   1.0
  36.  ******************************************************************************/
  37. function WebService() {}
  38.    
  39. ////////////////////////////////
  40. // nsISupports
  41. WebService.prototype.QueryInterface = function WebService_QueryInterface(aIID)
  42. {
  43.   var ifaces = this.getInterfaces({});
  44.   for (var i=0; i<ifaces.length; i++) {
  45.     if (aIID.equals(ifaces[i]))
  46.       return this;
  47.   }
  48.  
  49.   throw Cr.NS_ERROR_NO_INTERFACE;
  50. };
  51.             
  52. ////////////////////////////////
  53. // nsIClassInfo
  54. WebService.prototype.getInterfaces = function WebService_getInterfaces(aCount)
  55. {
  56.   var ifaces = [Ci.ffIWebService, Ci.nsIClassInfo, Ci.nsISupports];
  57.   aCount.value = ifaces.length;
  58.   return ifaces;
  59. };
  60.   
  61. WebService.prototype.getHelperForLanguage = function WebService_getHelperForLanguage(aLanguage) { return null; };
  62. WebService.prototype.contractID = gComponents["WebService"].contractID;
  63. WebService.prototype.classID = gComponents["WebService"].classID;
  64. WebService.prototype.classDescription = gComponents["WebService"].className;
  65. WebService.prototype.implementationLanguage = Ci.nsIProgrammingLanguage.JAVASCRIPT;
  66. WebService.prototype.flags = Ci.nsIClassInfo.DOM_OBJECT;
  67.             
  68. ////////////////////////////////
  69. // ffIWebService
  70.  
  71. /**
  72.  * String version of Forecastfox
  73.  */  
  74. WebService.prototype.version = "0.9.10";
  75.    
  76. /**
  77.  * Installs an icon pack
  78.  * 
  79.  * @param   Name of the pack to install.
  80.  * @param   URL pack is installed from.
  81.  */
  82. WebService.prototype.installIconPack = function WebService_installIconPack(aName, aURL)
  83. {
  84.   //get topmost window
  85.   var win = getTopWindow();
  86.                          
  87.   //check url for security
  88.   if (!securityCheck(aURL, win))
  89.     return;
  90.  
  91.   //get the window watcher service
  92.   var watcher = Cc["@mozilla.org/embedcomp/window-watcher;1"].
  93.                 getService(Ci.nsIWindowWatcher);
  94.                      
  95.   //create dialog parameters
  96.   var params = Cc["@mozilla.org/embedcomp/dialogparam;1"].
  97.                createInstance(Ci.nsIDialogParamBlock);
  98.   params.SetString(0, aName);
  99.   params.SetString(1, aURL);
  100.  
  101.   //open install dialog    
  102.   watcher.openWindow(win, "chrome://forecastfox/content/icons/icons.xul", 
  103.                      "_blank", "chrome,centerscreen,modal,dialog,titlebar",
  104.                      params);            
  105. };